pymongo.MongoClient
ConnectionFailure
並在背景重新連線,應用程式要用try...except
處理此例外情況,然後繼續執行。alive()
拿掉了,因為無論是否已連線,當操作時都會在背景自動連線。host
: 可以是單純的ip address,也可以是完整的mongodb URI,例如'mongodb://user:pass@10.0.0.1:27017'
。在URI中設定的port會覆蓋port
參數的設定。ip address可以是ipv6,例如'[::1]'
等同於'localhost'
。如果要連線到replica set或mongoses,host
參數可以是list of strings,連線時會一個一個嘗試,並使用最後一個連線正確的host。預設值為'localhost'
。port
: 連線的port number,預設為27017
。document_class
: 執行query時,傳回文件的資料型態,預設為dict
。tz_aware
: 設為True
,文件中的時間會作時區調整,預設為False
。connect
: 設為True
,會馬上在背景連線到MongoDB;預設為`False,會在第一次操作時才連線。maxPoolSize
: 這個client的connection pool大小,代表同時連線的數量,預設為100
,不可以設為0
。socketTimeoutMS
: 送出操作後等多少milliseconds算是timeout,預設為None
代表沒有timeout。connectTimeoutMS
: 第一次連線等多少milliseconds會判定為server離線,預設為20000
代表20秒,設為None
代表沒有timeout。serverSelectionTimeoutMS
: 當host
是list時,總共可以花多少milliseconds來找正確的server。對應每個server會產生一個連線,每個連線的時間受限於connectTimeoutMS
。預設值為30000
代表30秒。waitQueueTimeoutMS
: 當connection pool已滿時,新的連線等多少milliseconds算是timeout,預設為None
代表沒有timeout。waitQueueMultiple
: 當connection pool已滿時,可以有多少個等待連線。waitQueueMultiple
乘上maxPoolSize
就是最大等待數量。預設值為None
代表沒有限制。socketKeepAlive
: 已連線的socket是否要定期送keep-alive來保持連線。預設為False
。event_listeners
: 包含event listener的list或tuple。w
: 當連線到replica set時,寫入操作應該要複製幾次。例如w=3
代表寫入primary後,會被block直到文件複製兩次。設w=0
表示不考慮。wtimeout
: 必須和w
一起使用,表示write propagation要等多少milliseconds算是timeout。j
: 設為True
,寫入時要等真的寫入journal才會返回。在MongoDB 2.6之前的版本此參數無效果。在MongoDB 2.6之後,如果MongoDB沒有開journaling功能,則每次寫入都會產生exception。此參數不能與fsync
同時使用。fsync
: 設為True
,如果MongoDB沒有journaling,會等資料真的寫入硬碟才會返回。如果MongoDB有journaling,則效果與j
相同,會等寫入journal才返回。此參數不能與j
同時使用。replicaSet
: 設定要連線的replica set的名稱,連線時會從host
list中找所有符合此名稱的member,預設為None
。read_preference
: 所有可用的read preference參數請參考ReadPreference
。預設值為PRIMARY
。ssl
: 設為True
代表使用SSL連線,預設為False
。ssl_keyfile
: 代表private key的檔案位置,設定此值會使ssl=True
。預設值為None
。ssl_certfile
: 代表certificate的檔案位置,設定此值會使ssl=True
。預設值為None
。ssl_cert_reqs
: 反向連線時是否需要驗證,此參數可用的值為ssl.CERT_NONE
(不需驗證)、ssl.CERT_OPTIONAL
(不需驗證,但有提供驗證機制)、ssl.CERT_REQUIRED
(強制驗證)。如果設為ssl.CERT_OPTIONAL
或ssl.CERT_REQUIRED
,則CA certificate會優先從ssl_ca_certs
參數取得,如果沒有則向作業系統索取。設定此值會使ssl=True
。當ssl=True
時,預設值為ssl.CERT_REQUIRED
。ssl_ca_certs
: 代表CA cerficicate的檔案位置,用來驗證反向連線,設定此值會使ssl=True
。預設值為None
。ssl_match_hostname
: 預設值為True
,表示用Python的ssl.match_hostname()
驗證hostname。要設為False
前要小心,可能會讓你的應用程式受到man-in-the-middle攻擊。readConcernLevel
: 設定讀取操作的isolation level。例如設為majority
只會傳回寫入超過半數node的資料,一般都不設定使用server預設值。close()
: 結束所有connection pool的連線,並停止monitor thread。但如果對closed client作操作,又會在背景自動連線並啟動monitor thread。client[db_name]
或 client.db_name
: 傳回db_name
對應的Database
物件。如果該名稱不存在,會傳回InvalidName
。address
: 一個tuple (host, port)
代表目前的連線。如果這個client是連線到mongoses,讀取此值會產生InvalidOperation
,應該用nodes
取代。如果client未連線,則讀取此值會自動連線,過程中可能產生ServerSelectionTimeoutError
。is_primary
: True
表示已經連線而且可以寫入。如果client未連線,則讀取此值會自動連線,過程中可能產生ServerSelectionTimeoutError
。is_mongos
: True
表示連線到mongos。如果client未連線,則讀取此值會自動連線,過程中可能產生ServerSelectionTimeoutError
。max_pool_size
: 同時連線的socket的最大數量。如果pool達到此數量,所有操作都會block,直到其他socket釋放出空位為止。如果有設waitQueueTimeoutMS
,則block的時間有上限。nodes
: 目前連線的server清單,資料型態是frozenset
。當連線到replica set時,這個清單會隨時改變,在剛開始還沒連線時也可能為空。max_bson_size
: server最大的BSON物件是多少bytes。如果client未連線,則讀取此值會自動連線,過程中可能產生ServerSelectionTimeoutError
。max_message_size
: server最長的message是多少bytes。如果client未連線,則讀取此值會自動連線,過程中可能產生ServerSelectionTimeoutError
。read_preference
: 唯讀的read preference。write_concern
: 唯讀的write concern。is_locked
: server是否為鎖定狀態。鎖定時所有write都會被block,但read仍然可以用。要透過unlock()
來解鎖。database_names()
: 傳回所有database的名稱。drop_database(name_or_database)
: 刪除一個database,參數是database的名稱或是Database
物件,資料型態錯誤會產生TypeError
。get_default_database()
: 如果URI中有設定default database,可透過此方法讀取,否則會產生ConfigurationError
。get_database(name, codec_options=None, read_preference=None, write_concern=None, read_concern=None)
: 根據給定的名稱和選項取得Database
物件。通常用在你希望的選擇與client預設值不同時。codec_options
: None
或是CodecOptions
物件read_preference
: None
或是pymongo.read_preferences
所屬的物件write_concern
: None
或是WriteConcern
物件read_concern
: None
或是ReadConcern
物件server_info()
: 傳回server資訊。close_cursor(cursor_id, address=None)
: 關閉指定cursor的連線,如果cursor_id
不是int
或long
會產生TypeError
。address
可設為(host, port)
。kill_cursors(cursor_id, address=None)
: 送出kill message給指定的cursor,如果cursor_id
不是int
或long
會產生TypeError
。address
可設為(host, port)
。set_cursor_manager(manager_class)
: 設定client cursor manager,manager_class
必須是CursorManager
的subclass。cursor manager用來決定什麼時候要真正殺掉一個closed cursor。fsync(**kwargs)
: 送出所有延遲的寫入,參數設lock=True
會在送出後鎖定server來禁止寫入,參數設async=True
則會馬上返回。lock
及async
不可以同時使用。在Windows,MongoDB不支援async
模式。unlock()
: 解除server的鎖定。pymongo.database.Database
client
: 一個MongoClient
物件。name
: database的名稱,如果不是字串會產生TypeError
,如果不存在會產生InvalidName
。codec_options
: CodecOptions
物件或是None
使用client的設定。read_preference
: 設定read preference或是None
使用client.read_preference
的設定。write_concern
: WriteConcern
物件或是None
使用client的設定。read_concern
: ReadConcern
物件或是None
使用client的設定。db[collection_name]
或 db.collection_name
: 取得名稱為collection_name
的Collection
物件,如果名稱不存在會產生InvalidName
。codec_options
: 唯讀的CodecOptions
物件read_preference
: 唯讀的read preferencewrite_concern
: 唯讀的WriteConcern
物件add_user(name, password=None, read_only=None, **kwargs)
name
: 使用者名稱。password
: 使用者密碼,如果使用者已存在,則會修改密碼。read_only
: 設為True
表示使用者只有讀的權限。authenticate(name, password, source, mechanism, **kwargs)
logout()
logout()
登出再重新登入。PyMongoError
的subclass。name
: 使用者名稱。如果不是字串會產生TypeError
。password
: 使用者密碼。如果不是字串會產生TypeError
。source
: 要登入的database名稱,不指定代表目前的database。如果不是字串會產生TypeError
。mechanism
: 驗證機制,預設為'DEFAULT'
,代表SCRAM-SHA-1
。client
: 這個Database
對應的MongoClient
物件。collection_names(include_system_collections)
include_system_collections
: 預設True
會包含系統的collection,例如system.indexes
。command(command, value, check, allowable_errors, read_preference, codec_option, **kwargs)
command
: 如果command
是字串,會送出{command: value}
到server上。如果command
是dict
,就直接送出。如果command
是字串,也可以用kwargs
補充,例如command('aaa','bbb',cc='dd')
會送出{aaa:'bbb', cc:'dd'}
。value
: 作為第一個command
的參數。check
: 是否檢查回應,預設為True
,當回應有錯誤時,會產生OperationFailure
。allowable_errors
: 如果check=True
,則忽略這些錯誤。預設為None
。read_preference
: 這個操作的read preference,預設為Primary()
。codec_options
: 一個CodecOptions
物件,預設為CodecOptions(document_class=dict, tz_aware=False, uuid_representation=PYTHON_LEGACY, unicode_decode_error_handler='strict', tzinfo=None)
。create_collection(name, codec_options, read_preference, write_concern, read_concern, **kwargs)
CollectionInvalid
。name
: 新建的collection名稱。codec_options
: 指定CodecOptions
物件,預設為None
。read_preference
: 指定read preference,預設為None
。write_concern
: 指定WriteConcern
物件,預設為None
。read_concern
: 指定ReadConcern
物件,預設為None
。size
: 初始化時的容量(bytes)。如果capped=True
,則這個值代表collection的最大容量。capped
: 設為True
會變成capped collection。max
: 如果capped=True
,這個值代表最大的物件數量。current_op(include_all=False)
: 傳回目前正執行中的operation,如果include_all=True
則會包含idle中的operation。dereference(dbref, **kwargs)
: 根據DBRef
找到對應的文件。如果dbref
不是一個DBRef
物件會產生TypeError
。如果找不到文件,會傳回None
。如果文件所在的database與目前的不同,會產生ValueError
。kwargs
可以給如同find()
在用的參數。drop_collection(name_or_collection)
: 刪除一個collection,name_or_collection
是collection名稱或是Collection
物件。get_collection(name, codec_options=None, read_preference=None, write_concern=None, read_concern=None)
name
: 要取得的collection名稱。codec_options
: 指定CodecOptions
物件,預設為None
。read_preference
: 指定read preference,預設為None
。write_concern
: 指定WriteConcern
物件,預設為None
。read_concern
: 指定ReadConcern
物件,預設為None
。incoming_copying_manipulators
: 一群copying manipulator,用來處理輸入的SON。incoming_manipulators
: 一群manipulator,用來處理輸入的SON。logout()
: 登出目前的帳號。name
: Database
的名稱。outgoing_copying_manipulators
: 一群copying manipulator,用來處理輸出的SON。outgoing_manipulators
: 一群manipulator,用來處理輸出的SON。profiling_info()
: 傳回profiling資訊。profiling_level()
: 傳回profiling level,值為{OFF, SLOW_ONLY, ALL}
。set_profiling_level(level, slow_ms=None)
: 設定profiling level,level
可以設為{OFF, SLOW_ONLY, ALL}
。OFF代表不作profiling,SLOW_ONLY代表只看slow operations,ALL代表對所有operations作profiling。執行時間超過slow_ms
的operation會視為slow operation。remove_user(name)
: 移除使用者帳號name
。system_js
: 傳回database的SystemJS
helper物件。validate_collection(name_or_collection, scandata=False, full=False)
CollectionInvalid
。name_or_collection
: collection名稱或是Collection
物件。scandata
: 設為True
,則除了結構,會作額外的檢查。預設為False
。full
: 設為True
,在scandata=True
時,會詳細檢查document的正確性。預設為False
。pymongo.database.SystemJS(database)
產生javascript的函式或物件,以協助database操作。SystemJS
不需要自己產生,一律透過db.system_js
來取得。
pymongo.collection.Collection
database
: database的名稱。name
: collection的名稱,如果不是字串會產生TypeError
,如果不存在會產生InvalidName
。create
: 設為True
會馬上建立collection,預設為False
表示第一次操作時才會建立。codec_options
: 預設為None
會延用database的設定,或是設為CodecOptions
物件read_preference
: 預設為None
會延用database的設定,或是設為read preference物件write_concern
: 預設為None
會延用database的設定,或是設為WriteConcern
物件read_concern
: 預設為None
會延用database的設定,或是設為ReadConcern
物件collection[name]
或 collection.name
: 取得名稱為name
的sub-collection,名稱不正確會產生InvalidName
。fullname
: 這個collection的完整名稱,通常是db_name.collection_name
。database
: 指向所在的database的Database
物件。codec_options
: 唯讀的CodecOptions
物件。read_preference
: 唯讀的read preference。write_concern
: 唯讀的WriteConcern
物件。with_options(codec_options=None, read_preference=None, write_concern=None, read_concern=None)
: 以新的參數產生一個複製的Collection
物件。bulk_write(requests, ordered=True, bypass_document_validation=False)
BulkWriteResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。bulk_api_result
: 傳回值的原始資訊。deleted_count
: 刪除documents的數量。inserted_count
: 插入documents的數量。matched_count
: 符合update條件的documents的數量。modified_count
: 修改documents的數量。upserted_count
: ReplaceOne
插入的documents的數量。upserted_ids
: ReplaceOne
插入的documents的id。requests
是list of write operations (InsertOne
, UpdateOne
, UpdateMany
, ReplaceOne
, DeleteOne
, DeleteMany
)ordered
: 預設值True
代表這些操作會依序執行。如果執行中發生錯誤,後面的操作都會放棄。設為False
表示可能平行處理,順序是隨機的,所有的操作都會嘗試一次。bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。insert_one(document, bypass_document_validation=False)
InsertOneResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。inserted_id
: 插入文件的id。document
: 要插入的文件,必須是mutable mapping,如果沒有_id
欄位,會自動產生_id
。bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。insert_many(documents, ordered=True, bypass_document_validation=False)
InsertManyResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。inserted_ids
: 插入文件的id。ordered
: 預設值True
代表這些操作會依序執行。如果執行中發生錯誤,後面的操作都會放棄。設為False
表示可能平行處理,順序是隨機的,所有的操作都會嘗試一次。bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。replace_one(filter, replacement, upsert=False, bypass_document_validation=False)
filter
條件的文件,傳回值為UpdateResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。raw_result
: 傳回值的原始資料。matched_count
: 符合update條件的documents的數量。modified_count
: 修改documents的數量。upserted_ids
: replace_one
插入的documents的id。filter
: 要篩選的條件。replacement
: 要取代的文件。upsert
: 設為True
會在找不到filter
對應的文件時,插入一份新文件。預設為False
。bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。update_one(filter, update, upsert=False, bypass_document_validation=False)
filter
條件的文件,傳回值為UpdateResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。raw_result
: 傳回值的原始資料。matched_count
: 符合update條件的documents的數量。modified_count
: 修改documents的數量。upserted_ids
: replace_one
插入的documents的id。filter
: 要篩選的條件。update
: 要修改的欄位和值。upsert
: 設為True
會在找不到filter
對應的文件時,插入一份新文件。預設為False
。bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。update_many(filter, update, upsert=False, bypass_document_validation=False)
filter
條件的文件,傳回值為UpdateResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。raw_result
: 傳回值的原始資料。matched_count
: 符合update條件的documents的數量。modified_count
: 修改documents的數量。upserted_ids
: replace_one
插入的documents的id。filter
: 要篩選的條件。update
: 要修改的欄位和值。通常會用特殊語法。upsert
: 設為True
會在找不到filter
對應的文件時,插入一份新文件。預設為False
。bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。delete_one(filter)
filter
條件的文件,傳回值為DeleteResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。raw_result
: 傳回值的原始資料。deleted_count
: 刪除的documents的數量。filter
: 要篩選的條件。delete_many(filter)
filter
條件的文件,傳回值為DeleteResult
物件。acknowledged
: 當WriteConcern(w=0)
時,acknowledged
會傳回False
,其他情況會傳回True
。raw_result
: 傳回值的原始資料。deleted_count
: 刪除的documents的數量。filter
: 要篩選的條件。aggregate(pipeline, **kwargs)
kwargs
來傳入。傳回值是CommandCursor
物件。$$out
pipeline,但read preference卻不是PRIMARY
,會產生錯誤。pipeline
: a list of aggregation pipeline stages。allowDiskUse
: 是否允許寫入暫存檔,設為True
,aggregate stage會將暫存檔案寫入_tmp
目錄,預設為False
。maxTimeMS
: 允許執行的時間(milliseconds)。batchSize
: 每次batch傳回documents的最大數量。useCursor
: 如果server有支援,要求server透過cursor提供結果。預設為True
。find(filter=None, projection=None, skip=0, limit=0, no_cursor_timeout=False, cursor_type=CursorType.NON_TAILABLE, sort=None, allow_partial_results=False, oplog_replay=False, modifiers=None, manipulate=True)
filter
條件的documents,傳回時只保留projection
指定的欄位。find()
會遵守read preference。filter
: 指定篩選條件的SON物件。projection
: 傳回結果要保留的欄位,除非指定_id:0
,否則_id
一定會包括在裡面。skip
: 要忽略前幾筆結果。limit
: 一次傳回的最大數量。no_cursor_timeout
: 預設值為False
,當cursor閒置10分鐘就會被server斷掉。如果設為True
,cursor永遠不會timeout,所以一定要手動close()
才能正常關閉。cursor_type
: 選擇cursor類別。NON_TAILABLE
: 標準cursor。TAILABLE
: 用在capped collection上,當最後一筆資料讀取後不會關閉,而會停留在最後一筆document的位置。如果有新的document加入,可以再繼續讀新的資料。TAILABLE_AWAIT
: 當最後一筆資料讀取後,server會等一段時間再關掉cursor,這樣在query過程中插入的document也可以被讀出來。EXHAUST
: MongoDB會主動將資料送給client,而不會等client要求,這可以減少latency。limit
會被忽略。sort
: 指定(key, direction)
來排序傳回的結果。allow_partial_results
: 設為True
,如果shard nodes當機了,會傳回部分結果而不會產生錯誤。預設為False
。oplog_replay
: 設為True
會設定oplogReplay query flag。modifiers
: 型態為dict
,用來設定query modifier。batch_size
: 一次傳回的documents數量。find_one(filter_or_id=None, *args, **kwargs)
filter
條件的document,找不到會傳回None
。find_one()
會遵守read preference。find()
的參數都可以用在find_one()
,除了limit
。filter
: 指定篩選條件的SON物件。args
及 kwargs
: 代表find()
可用的參數。find_one_and_delete(filter, projection, sort, **kwargs)
filter
條件的document,並將document從資料庫刪除,找不到會傳回None
。會遵守read preference。filter
: 指定篩選條件的SON物件。projection
: 傳回結果要保留的欄位,除非指定_id:0
,否則_id
一定會包括在裡面。預設為None
sort
: 如果有多筆符合的document,要如何選擇。排序後的第一筆將被傳回及刪除。。預設為None
find_one_and_replace(filter, replacement, projection, sort, return_document, **kwargs)
filter
條件的document,並將document從資料庫刪除,插入新的document replacement
,找不到會傳回None
。會遵守read preference。filter
: 指定篩選條件的SON物件。replacement
: 要用來取代document。projection
: 傳回結果要保留的欄位,除非指定_id:0
,否則_id
一定會包括在裡面。預設為None
upsert
: 設為True
會在找不到filter
對應的文件時,插入一份新文件。預設為False
。sort
: 如果有多筆符合的document,要如何選擇。排序後的第一筆將被傳回及刪除。。預設為None
return_document
: 預設值為ReturnDocument.BEFORE
,代表傳回被刪除的資料,如果找不到符合的會傳回None
。設為ReturnDocument.AFTER
則會傳回插入或取代的資料。find_one_and_update(filter, update, projection, sort, return_document, **kwargs)
filter
條件的document,並用update
的資料更新document。會遵守read preference。filter
: 指定篩選條件的SON物件。update
: 要更新的欄位和值。projection
: 傳回結果要保留的欄位,除非指定_id:0
,否則_id
一定會包括在裡面。預設為None
sort
: 如果有多筆符合的document,要如何選擇。排序後的第一筆將被傳回及刪除。。預設為None
upsert
: 設為True
會在找不到filter
對應的文件時,插入一份新文件。預設為False
。return_document
: 預設值為ReturnDocument.BEFORE
,代表傳回被刪除的資料,如果找不到符合的會傳回None
。設為ReturnDocument.AFTER
則會傳回插入或取代的資料。count(filter=None, **kwargs)
filter
: 指定篩選條件的SON物件。hint
: 要使用的index name,可以同時有多個index,如[('index_a', pymongo.ASCENDING), ('index_b', pymongo.DESCENDING)]
limit
: 要計算的最大數量。skip
: 要忽略前幾筆結果。maxTimeMS
: 這個命令允許執行的最長時間(milliseconds)。distinct(key, filter=None, **kwargs)
key
有幾種不同的值。key
: index key的名稱,如果不是字串會產生TypeError
。filter
: 計算時會篩選條件。maxTimeMS
: 這個命令允許執行的最長時間(milliseconds)。create_index(keys, **kwargs)
[('length', pymongo.ASCENDING), ('age', pymongo.DESCENDING)]
代表由兩個key組成的index,這個index只有當filter
同時出現length與age時,才會發揮作用。keys
: 字串代表一個key,或是一個list of tuple,代表多個key。name
: 這個index的指定名稱,設為None
表示自動產生。unique
: 設為True
表示key不會重複。background
: 設為True
表示在背景執行,避免影響前景的query。sparse
: 設為True
會忽略缺少指定key的documents。bucketSize
: 在geoHaystack index中,多少個documents會聚成一群來計算經緯度。min
: key的最小值。max
: key的最大值。expireAfterSeconds
: 如果key指定的欄位是UTC datetime,當現在時間與key值的時間相差超過expireAfterSeconds
秒,就會自動刪除這份文件。partialFilterExpression
: 指定partial index。create_indexes(indexes)
indexes
: list of IndexModel
。drop_index(index_or_name)
OperationFailure
。drop_indexes()
: 刪除這個collection所有的index。如果collection不存在,會產生OperationFailure
。reindex()
: 重建這個collection上所有的index。list_indexes()
: 列出這個collection上所有的index。index_information()
: 傳回dict
包含{'index_name': information}
。drop()
: 等同於db.drop_collection('name')
。rename(new_name, **kwargs)
: 修改collection的名稱。如果新的名稱已經存在,會產生InvalidName
。options()
: 傳回collection可用的選擇及目前的值。group(key, condition, initial, reduce, finalize=None, **kwargs)
key
: 設為None
表示整個文件都拿來當key。設為list of keys會由這些key作group-by。設為字串會由單一的key作group-by。condition
: 指定要考慮的row。initial
: aggregation counter object的初始值。reduce
: 表示aggregation function,格式為Javascript字串。finalize
: 每一個輸出物件都會呼叫此function。map_reduce(map, reduce, out, full_response=False, **kwargs)
map
: map function,格式為Javascript字串。reduce
: reduce function,格式為Javascript字串。out
: 輸出的collection名稱或是out物件(dict
)。full_response
: 設為True
,會傳回命令完整的回應;預設為False
,只傳回輸出的collection。inline_map_reduce(map, reduce, full_response=False, **kwargs)
map
: map function,格式為Javascript字串。reduce
: reduce function,格式為Javascript字串。full_response
: 設為True
,會傳回命令完整的回應;預設為False
,只傳回list of documents。parallel_scan(num_cursors)
cursors = collection.parallel_scan(4)
threads = [threading.Thread(target=process_cursor, args=(cursor,)) for cursor in cursors]
for thread in threads: thread.start()
for thread in threads: thread.join()
num_cursors
: 要傳回幾個cursor。initialize_unordered_bulk_op(bypass_document_validation=False)
bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。initialize_ordered_bulk_op(bypass_document_validation=False)
bypass_document_validation
: 預設值False
,設為True
代表允許不合法的document被寫入。pymongo.cursor.Cursor
Collection.find()
來傳回Cursor
。c[index]
或 c.__getitem__(index)
index
指定的documents,例如c[50]
是傳回第50筆資料,c[20:25]
相當於skip=20
及limit=5
。index
是負數或超過最大值,會產生IndexError
。add_option(mask)
: 設定query flag的bitmask,mask
是2的幂次。alive
: 在一般cursor中,這個值沒有用。在TAILABLE
cursor中,這個值用來判斷cursor是否被server關閉。batch_size(size)
: 一次batch傳回的document數量,這個值是唯讀的,應該在Collection.find()
中設定。clone()
: 傳回cursor的複製品,無論舊的cursor讀過多少資料,新的cursor內部的指標一定指向開頭。close()
: 明確的關閉cursor。count(with_limit_and_skip=False)
with_limit_and_skip
: 設為True
時,會考慮limit
及skip
的值,預設值為False
。cursor_id
: 一個long number代表id。distinct(key)
: 統計指定的key有幾種不同的值。explain()
: 傳回explain plan record。hint(index)
: 新增一個hint,告訴Mongo要執行此query最適當的index。正確的設定可大幅增加query的效率,如果你查詢多個field,其中有一個有作index,就可以將此index作為hint。如果index不存在,不會產生錯誤。max(spec)
: 設定index的上限值,spec
是list of (field, limit)。min(spec)
: 設定index的下限值,spec
是list of (field, limit)。next()
: 從cursor的buffer queue中讀取下一筆資料。remove_option(mask)
: 消除query flag的bitmask,mask
是2的幂次。retrieved
: 目前已從server讀取的資料總數,相當於應用程式已讀取的資料數,加上buffer queue中剩餘的資料數。rewind()
: 讓cursor回到開頭,會保持目前cursor的所有設定。where(code)
: 在目前的query新增$$where
述句,code
是JavaScript expression,在每個document掃描時都會評估,只有傳回True
的才會被讀取。